""" propertis provide a built-in descriptor type that knows how to link an 
attribute to a set of methods. a property takes the fget argument and three
optional ones: fset, fdel, and doc

Notion !!!
the created attribute is made on the fly using the methos of the current class
and will not use methods that overridden in the derived classes. """

class FirstClass(object):
    def _get_price(self):
        return '$ 500'
    price = property(_get_price)

class SecondClass(FirstClass):
    def _get_price(self):
        return '$ 20'

class ThirdClass(FirstClass):
    def _cheap_price(self):
        return '$ 20'
    price = property(_cheap_price)

plance_ticket = SecondClass()
print plance_ticket.price
plance_ticket = ThirdClass()
print plance_ticket.price
